Forwarded from Machinelearning
Если вы хотите не просто запускать готовые модели, а понять, как они работают «под капотом», репозиторий Beyond-NanoGPT — то, что нужно. Этот проект аспиранта по CS Стэнфордского университета, который создан как мост между учебными примерами вроде nanoGPT и сложными наработками, предлагает десятки реализаций современных методов глубокого обучения.
Все написано с нуля на PyTorch, с детальными комментариями — идеально для тех, кто устал от абстрактных статей и беспощадного продакшн-кода. Каждая строчка кода написана так, что становится понятно, как его использовать на практике.
Застряли на уровне чтения бесконечных туториалов и хотите двигаться дальше? Этот репозиторий — отличный шаг. Он не сделает вас экспертом за неделю, но даст инструменты, чтобы разобраться в современных статьях и начать свои эксперименты. И да, здесь нет красивого веб-интерфейса или готовых SaaS-решений — только код, комментарии и ваше любопытство. Как и должно быть в ресерче.
Начать очень просто: клонируете репозиторий, ставите зависимости и можно погружаться в код. Архитектуры? Есть Vision Transformer для классификации изображений, Diffusion Transformer для генерации, ResNet и даже MLP-Mixer. Каждый скрипт — отдельный эксперимент.
Например, чтобы обучить DiT на датасете CIFAR-10, достаточно запустить
train_dit.py
. Все рассчитано на один GPU, так что даже без доступа к злым кластерам можно практиковаться. А если хочется разобраться в механизмах внимания, отдельные ноутбуки покажут, как работают Grouped-Query, линейное, разреженное или перекрестное внимание — с визуализациями и пояснениями.Проект не только про архитектуры, есть и прикладные техники. Хотите ускорить инференс языковой модели? Посмотрите реализацию KV-кэширования или спекулятивного декодирования — методы, которые сейчас активно используют в LLM-инфраструктуре.
Интересует RL? В разделе с обучением с подкреплением есть классика - DQN и PPO для Cartpole, а в планах — нейросеть для шахмат с MCTS. При этом код не просто работает, но и объясняет нюансы: почему в REINFORCE важна базовая линия, как избежать градиентного взрыва в трансформерах или чем RoPE-эмбединги лучше стандартных.
Часть разделов (Flash Attention, RLHF) пока в разработке. Но планы грандиозные: автор обещает все - от квантования весов до распределенного RL.
@ai_machinelearning_big_data
#AI #ML #LLM #Github #BeyondNanoGPT
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🧀 RAGatouille — продвинутый RAG с ColBERT без сложностей. Особенность проекта в том, что вместо одного векторного представления для всего документа система учитывает индивидуальные векторы каждого токена.
Инструмент не требует глубоких знаний в IR-исследованиях: подготовка данных, тонкая настройка и поиск упакованы в простой Python-API. Для тестирования достаточно
🤖 GitHub
@machinelearning_interview
Инструмент не требует глубоких знаний в IR-исследованиях: подготовка данных, тонкая настройка и поиск упакованы в простой Python-API. Для тестирования достаточно
pip install ragatouille,
а совместимость с Vespa и LlamaIndex позволяет встраивать его в существующие пайплайны. 🤖 GitHub
@machinelearning_interview
👾 Text Generator — ИИ-ассистент для Obsidian. Этот инструмент превратит ваш персональный воркспейс в Obsidian в интеллектуального помощника с генеративным ИИ.
Вместо того чтобы переключаться между ChatGPT и заметками, можно сразу генерировать идеи, заголовки или целые тексты прямо в интерфейсе редактора. Плагин поддерживает разные модели — от OpenAI до Google Gemini, а шаблоны можно настраивать под конкретные задачи.
🤖 GitHub
@machinelearning_interview
Вместо того чтобы переключаться между ChatGPT и заметками, можно сразу генерировать идеи, заголовки или целые тексты прямо в интерфейсе редактора. Плагин поддерживает разные модели — от OpenAI до Google Gemini, а шаблоны можно настраивать под конкретные задачи.
🤖 GitHub
@machinelearning_interview
Forwarded from Machinelearning
Atropos от NousResearch - это гибкий фреймворк для асинхронного управления RL-средами. Его архитектура построена так, чтобы максимизировать эффективность даже в распределенных системах, будь то локальный кластер или облако.
Atropos поддерживает децентрализацию. Он позволяет запускать несколько экземпляров сред (от статических датасетов, интерактивных игр, RLAIF и RLHF до обучения сложным многоэтапным взаимодействиям), которые асинхронно передают данные в центральный узел.
Это избавляет от простоя ресурсов, когда обновления политики модели тормозят из-за ожидания результатов всех окружений. Под капотом — интеграция с любыми API (OpenAI, vLLM, SGLang), позволяя свободу выбора LLM-провайдера без переписывания кода.
Практическая польза протестирована в экспериментах:
Такие результаты достигнуты благодаря многозадачности: фреймворк одновременно управляет разными типами сред, объединяя их в единый тренировочный поток. Вы можете обучать модель на статических данных утром и переключаться на интерактивные игры вечером, не меняя инфраструктуру.
Для разработчиков Atropos предлагает готовые инструменты: от датасетов для тонкой настройки (SFT, DPO) до дебаггеров и визуализации.
Atropos не привязывает вас к конкретному алгоритму RL или инфраструктуре. Запустите 10 экземпляров на ноутбуке или 10 000 через Slurm — фреймворк равномерно распределит нагрузку. Это особенно ценно для исследований: можно быстро экспериментировать с разными подходами, не тратя недели на настройку пайплайнов.
В репозитории есть все, что нужно: коллекция готовых к использованию сред RL, библиотека с базовыми классами и утилитами и примеры конфигураций обучения.
Если хотите понять, как ускорить свои эксперименты с LLM - загляните в документацию проекта, возможно, это именно тот инструмент, который избавит вас от боли асинхронной координации.
@ai_machinelearning_big_data
#AI #ML #LLM #RL #Framework #NousResearch #Atropos
Please open Telegram to view this post
VIEW IN TELEGRAM
💎 PyTorch Geometric Temporal — проект, расширяющий возможности PyTorch Geometric для работы с динамическими графами. Это специализированная библиотека, которая помогает анализировать данные, где связи между объектами меняются со временем: от прогнозирования трафика до эпидемиологических моделей.
🧑💻 Проект имеет:
— Готовые реализации 15+ архитектур из научных статей
— Поддержка временных срезов данных и распределённого обучения через Dask
— Интеграция с PyTorch Lightning для удобной работы с GPU
Для старта достаточно
🤖 GitHub
@machinelearning_interview
🧑💻 Проект имеет:
— Готовые реализации 15+ архитектур из научных статей
— Поддержка временных срезов данных и распределённого обучения через Dask
— Интеграция с PyTorch Lightning для удобной работы с GPU
Для старта достаточно
pip install torch-geometric-temporal
— в комплекте идут датасеты по эпидемиологии, энергетике и веб-трафику.🤖 GitHub
@machinelearning_interview
Forwarded from Machinelearning
Media is too big
VIEW IN TELEGRAM
ОАЭ сделали искусственный интеллект обязательным предметом для всех учащихся — от детского сада до 12 класса. Это часть стратегии, которая должна превратить страну в ведущий центр ИИ-разработок на Ближнем Востоке. Уже с 2025-26 учебного года в государственных школах начнут преподавать основы ИИ, включая этические аспекты и реальное применение технологий.
Параллельно страна активно внедряет ИИ в госуправление: разрабатывает систему для автоматического анализа и обновления законов. Эксперты прогнозируют, что к 2030 году ИИ добавит $96 млрд к ВВП ОАЭ. Сейчас страна лидирует в своем регионе по технологическому развитию, и такие проекты только укрепят ее позиции в будущем.
bloomberg.com
OpenAI объявила о смене корпоративной структуры: теперь коммерческое направление будет работать как Public Benefit Corporation (PBC), но под полным контролем некоммерческой организации. Это решение отменяет предыдущие планы по полному переходу в коммерческий сектор. Основная цель — сохранить миссию компании: развитие искусственного интеллекта на благо всего человечества, а не ради прибыли акционеров.
Как объяснил CEO Сэм Альтман в письме сотрудникам, OpenAI изначально создавалась как некоммерческая организация, и этот принцип останется неизменным. Новая структура позволит привлекать сотни миллиардов долларов для развития ИИ, делая технологии доступнее.
Решение о реструктуризации было принято после консультаций с юристами и общественными деятелями. OpenAI также планирует усилить работу в области безопасности ИИ и открыть доступ к мощным моделям.
openai.com
Tether, крупнейший эмитент стейблкоинов, готовит запуск открытой ИИ-платформы. Как сообщил CEO Паоло Ардоино в соцсетях, система будет работать на любом устройстве без API-ключей и централизованных узлов, принимая платежи в биткоинах и USDT. Это решение может стать альтернативой для регионов с ограниченным доступом к фиатным банкам. Пока детали ИИ-платформы раскрыты частично, но цель амбициозна: проект планирует интеграцию криптовалют в повседневные технологии.
Параллельно Tether планирует выпустить новый стейблкоин, привязанный к доллару, для рынка США — при условии одобрения закона GENIUS Act.
pymnts.com
Anthropic анонсировала новую инициативу "AI for Science", которая поможет ускорить научные исследования через предоставление бесплатных API-кредитов. Программа ориентирована на биологию и науки о жизни.
Участвовать могут исследователи из научных учреждений. Заявки отберут по потенциалу проекта, его влиянию и роли ИИ в ускорении работы. Приоритет получат работы по геномике или борьбе с крупными заболеваниями. Податься можно через специальную форму, а решения будет принимать команда Anthropic с привлечением экспертов.
anthropic.com
Концепция Societal AI — это подход к разработке ИИ, который учитывает влияние технологий на общество. Основная цель: создание систем, отвечающих потребностям здравоохранения, образования и госуслуг, а также минимизация рисков вроде поляризации мнений.
Проект выделяет 3 принципа: гармония (снижение конфликтов), синергия (усиление человеческих возможностей) и устойчивость (адаптивность к изменениям). Особое внимание уделено 10 ключевым вопросам от этического выравнивания ИИ до трансформации труда и регуляторных рамок. Подробности — в полной версии документа.
microsoft.com
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Задача для дата-сайентистов: "Средняя зарплата" (с подвохом)
📖 Описание задачи
У вас есть DataFrame
Результат:
В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.
Вы пишете следующий код:
✅ Код выполняется без ошибок, но когда вы проверяете результат:
Получаете:
✅ Всё вроде бы верно…
Но через неделю приходит заказчик и говорит:
> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»
📝 Вопросы:
1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN
---
🎯 Что проверяет задача:
✅ Понимание, как
✅ Понимание, что
✅ Умение работать с группами, где нет данных
---
💡 Подсказка:
Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).
Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.
---
✅ Ожидаемое правильное решение:
```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)
df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```
Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.
🔥 Дополнительный подвох (для усложнения):
Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?
📝 Вывод:
Эта задача проверяет:
✅ Понимание нюансов заполнения пропусков в Pandas
✅ Внимательность к corner-case ситуациям
✅ Умение работать с группами с частично или полностью отсутствующими данными
🔥 Отличная тренировка внимательности и глубины понимания Pandas!
📖 Описание задачи
У вас есть DataFrame
df
с данными о зарплатах сотрудников компании:
import pandas as pd
data = {
'employee_id': [1, 2, 3, 4, 5, 6],
'department': ['IT', 'IT', 'HR', 'HR', 'Finance', 'Finance'],
'salary': [100000, None, 50000, None, 70000, None]
}
df = pd.DataFrame(data)
print(df)
Результат:
employee_id department salary
0 1 IT 100000.0
1 2 IT NaN
2 3 HR 50000.0
3 4 HR NaN
4 5 Finance 70000.0
5 6 Finance NaN
В задаче требуется заполнить пропущенные значения зарплат в каждом отделе медианой зарплаты этого отдела.
Если медиана не может быть рассчитана (например, все значения NaN) — оставить NaN.
Вы пишете следующий код:
df['salary_filled'] = df.groupby('department')['salary'].transform(lambda x: x.fillna(x.median()))
✅ Код выполняется без ошибок, но когда вы проверяете результат:
print(df)
Получаете:
employee_id department salary salary_filled
0 1 IT 100000.0 100000.0
1 2 IT NaN 100000.0
2 3 HR 50000.0 50000.0
3 4 HR NaN 50000.0
4 5 Finance 70000.0 70000.0
5 6 Finance NaN 70000.0
✅ Всё вроде бы верно…
Но через неделю приходит заказчик и говорит:
> «Ты заполнил пропуски, но потом выяснилось, что в реальных данных в одном отделе все зарплаты NaN, а значит медиана не существует.
> А в твоём коде при такой ситуации почему-то появляется 0 вместо NaN!»
📝 Вопросы:
1. Почему появилось 0 (хотя ожидалось NaN)?
2. Как переписать код так, чтобы:
- Если медиана существует → заполнить ею NaN
- Если медиана не существует (все значения NaN) → оставить NaN
---
🎯 Что проверяет задача:
✅ Понимание, как
median()
работает на пустой серии ✅ Понимание, что
fillna(np.nan)
может привести к замещению на 0 при приведении типов ✅ Умение работать с группами, где нет данных
---
💡 Подсказка:
Если `x.median()` вернёт `nan`, то `x.fillna(nan)` оставит NaN внутри группы, **но transform может "автоматически" заменить NaN на 0 при сборке результата** (особенность Pandas).
Нужно явно управлять значением медианы, чтобы избежать непредвиденного замещения.
✅ Ожидаемое правильное решение:
```python
def fill_with_median_or_nan(x):
med = x.median()
return x.fillna(med if pd.notna(med) else np.nan)
df['salary_filled'] = df.groupby('department')['salary'].transform(fill_with_median_or_nan)
```
Теперь в отделах, где медиана не существует, **NaN останется NaN**, а не превратится в 0.
🔥 Дополнительный подвох (для усложнения):
Что будет, если отдел состоит только из одного сотрудника с NaN?
→ Нужно ли обработать случай, где в отделе всего 1 запись и она NaN?
📝 Вывод:
Эта задача проверяет:
✅ Понимание нюансов заполнения пропусков в Pandas
✅ Внимательность к corner-case ситуациям
✅ Умение работать с группами с частично или полностью отсутствующими данными
🔥 Отличная тренировка внимательности и глубины понимания Pandas!
🧩 Задача для продвинутых дата-сайентистов: "Парадоксальная корреляция"
📖 Описание задачи
У вас есть DataFrame
Результат:
Вам нужно посчитать корреляцию между spend и revenue.
Вы пишете:
И получаете:
❗️Но вы уверены, что данные связаны (чем больше spend, тем больше revenue), а Pandas возвращает NaN.
📝 Ваша задача:
1. Почему Pandas возвращает
2. Как правильно посчитать корреляцию?
3. Как бы вы обработали такие данные в продакшн-пайплайне?
---
🎯 Подвох (ключевой момент):
Метод
В этом DataFrame остаются только строки с индексами 0, 1, 2, 5.
→ На этих данных корреляция может быть рассчитана.
Но главная проблема — тип данных.
Если данные были считаны, например, из CSV, где пустые значения остались строками, то Pandas определит колонку как
Вывод:
И тогда
---
💡 Решение:
1. Проверить типы данных:
```python
print(df.dtypes)
```
2. Привести к числовому типу:
```python
df['spend'] = pd.to_numeric(df['spend'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce')
```
3. Посчитать корреляцию без NaN:
```python
correlation = df[['spend', 'revenue']].dropna().corr().iloc[0, 1]
print(correlation)
```
✅ Теперь корреляция рассчитана корректно.
---
🔥 Дополнительный подвох:
А что если CSV-файл считан с, а данные внутри разделены запятыми?
→ Тогда весь DataFrame будет одной колонкой с типом object, а Pandas не сможет даже начать обработку.
---
📝 Что проверяет задача:
✅ Понимание, как Pandas обрабатывает NaN и object
✅ Внимательность к типам данных
✅ Умение находить ошибки при чтении и парсинге данных
✅ Опыт очистки и предобработки грязных данных
🔥 Отличная проверка на внимательность и глубину работы с Pandas!
📖 Описание задачи
У вас есть DataFrame
df
с данными о рекламных кампаниях:
import pandas as pd
data = {
'campaign_id': [1, 2, 3, 4, 5, 6],
'spend': [1000, 1500, 1200, None, 2000, 1700],
'revenue': [2000, 2300, 2500, 1800, None, 2700]
}
df = pd.DataFrame(data)
print(df)
Результат:
campaign_id spend revenue
0 1 1000.0 2000.0
1 2 1500.0 2300.0
2 3 1200.0 2500.0
3 4 NaN 1800.0
4 5 2000.0 NaN
5 6 1700.0 2700.0
Вам нужно посчитать корреляцию между spend и revenue.
Вы пишете:
correlation = df['spend'].corr(df['revenue'])
print(correlation)
И получаете:
nan
❗️Но вы уверены, что данные связаны (чем больше spend, тем больше revenue), а Pandas возвращает NaN.
📝 Ваша задача:
1. Почему Pandas возвращает
NaN
?2. Как правильно посчитать корреляцию?
3. Как бы вы обработали такие данные в продакшн-пайплайне?
---
🎯 Подвох (ключевой момент):
Метод
corr()
автоматически игнорирует строки, где хотя бы одно значение NaN.В этом DataFrame остаются только строки с индексами 0, 1, 2, 5.
→ На этих данных корреляция может быть рассчитана.
Но главная проблема — тип данных.
Если данные были считаны, например, из CSV, где пустые значения остались строками, то Pandas определит колонку как
object
, а не float64
:
print(df.dtypes)
Вывод:
spend object
revenue object
И тогда
corr()
вернёт NaN, потому что не смог интерпретировать данные как числовые.---
💡 Решение:
1. Проверить типы данных:
```python
print(df.dtypes)
```
2. Привести к числовому типу:
```python
df['spend'] = pd.to_numeric(df['spend'], errors='coerce')
df['revenue'] = pd.to_numeric(df['revenue'], errors='coerce')
```
3. Посчитать корреляцию без NaN:
```python
correlation = df[['spend', 'revenue']].dropna().corr().iloc[0, 1]
print(correlation)
```
✅ Теперь корреляция рассчитана корректно.
---
🔥 Дополнительный подвох:
А что если CSV-файл считан с
delimiter=';'
→ Тогда весь DataFrame будет одной колонкой с типом object, а Pandas не сможет даже начать обработку.
---
📝 Что проверяет задача:
✅ Понимание, как Pandas обрабатывает NaN и object
✅ Внимательность к типам данных
✅ Умение находить ошибки при чтении и парсинге данных
✅ Опыт очистки и предобработки грязных данных
🔥 Отличная проверка на внимательность и глубину работы с Pandas!
🎲 Задача с подвохом: Монетки и ошибка интуиции
Условие:
У вас есть две монеты:
• Монета A: честная, вероятность выпадения орла = 50%
• Монета B: нечестная, у неё две стороны с орлами (орёл всегда выпадает)
Вы случайным образом выбираете одну монету (с вероятностью 50% каждая) и подбрасываете её один раз. Выпадает орёл.
❓ Вопрос:
Какова вероятность того, что вы выбрали нечестную монету (Монета B)?
🔍 Разбор:
Нам нужна вероятность:
**P(B | O)** — вероятность того, что выбрана Монета B при условии, что выпал орёл.
📈 **Быстрая формула (Байес):**
P(B | O) = (P(O | 😎 * P(B)) / (P(O | A) * P(A) + P(O | 😎 * P(B))
Подставляем:
= (1 * 0.5) / (0.5 * 0.5 + 1 * 0.5)
= 0.5 / 0.75 ≈ 0.6667
✅ Вероятность ≈ 66,7%
💻 **Проверим симуляцией (Python):**
```python
import random
def simulate(n_trials=100_000):
count_B_given_O = 0
count_O = 0
for _ in range(n_trials):
coin = random.choice(['A', 'B']) # выбираем монету
if coin == 'A':
result = random.choice(['H', 'T']) # честная монета
else:
result = 'H' # нечестная монета (всегда орёл)
if result == 'H':
count_O += 1
if coin == 'B':
count_B_given_O += 1
prob = count_B_given_O / count_O
print(f"Симуляция: вероятность P(B | O) ≈ {prob:.4f}")
simulate()
```
Примерный вывод:
```
Симуляция: вероятность P(B | O) ≈ 0.6665
```
💥 **Подвох:**
Многие интуитивно думают, что вероятность остаётся 50%, но факт выпадения орла изменяет наше знание о ситуации — это типичная ошибка игнорирования условной вероятности.
🧠 **Что важно для Data Science:**
• Принцип обновления вероятностей лежит в основе Байесовских моделей
• Ошибки интуиции часто приводят к неправильным выводам при работе с вероятностями
• Симуляция помогает проверять теорию и укреплять понимание статистики
@machinelearning_interview
Условие:
У вас есть две монеты:
• Монета A: честная, вероятность выпадения орла = 50%
• Монета B: нечестная, у неё две стороны с орлами (орёл всегда выпадает)
Вы случайным образом выбираете одну монету (с вероятностью 50% каждая) и подбрасываете её один раз. Выпадает орёл.
❓ Вопрос:
Какова вероятность того, что вы выбрали нечестную монету (Монета B)?
🔍 Разбор:
Нам нужна вероятность:
**P(B | O)** — вероятность того, что выбрана Монета B при условии, что выпал орёл.
📈 **Быстрая формула (Байес):**
P(B | O) = (P(O | 😎 * P(B)) / (P(O | A) * P(A) + P(O | 😎 * P(B))
Подставляем:
= (1 * 0.5) / (0.5 * 0.5 + 1 * 0.5)
= 0.5 / 0.75 ≈ 0.6667
✅ Вероятность ≈ 66,7%
💻 **Проверим симуляцией (Python):**
```python
import random
def simulate(n_trials=100_000):
count_B_given_O = 0
count_O = 0
for _ in range(n_trials):
coin = random.choice(['A', 'B']) # выбираем монету
if coin == 'A':
result = random.choice(['H', 'T']) # честная монета
else:
result = 'H' # нечестная монета (всегда орёл)
if result == 'H':
count_O += 1
if coin == 'B':
count_B_given_O += 1
prob = count_B_given_O / count_O
print(f"Симуляция: вероятность P(B | O) ≈ {prob:.4f}")
simulate()
```
Примерный вывод:
```
Симуляция: вероятность P(B | O) ≈ 0.6665
```
💥 **Подвох:**
Многие интуитивно думают, что вероятность остаётся 50%, но факт выпадения орла изменяет наше знание о ситуации — это типичная ошибка игнорирования условной вероятности.
🧠 **Что важно для Data Science:**
• Принцип обновления вероятностей лежит в основе Байесовских моделей
• Ошибки интуиции часто приводят к неправильным выводам при работе с вероятностями
• Симуляция помогает проверять теорию и укреплять понимание статистики
@machinelearning_interview
📝 ML Course Notes — коллекция конспектов по машинному обучению. Этот открытый репозиторий объединяет структурированные заметки по курсам от Стэнфорда, MIT и CMU — от основ нейросетей до трансформеров и RLHF. Здесь можно найти выжимки ключевых идей из лекций Andrew Ng, Кристофера Мэннинга и Андрея Карпати.
Репозиторий будет полезен для тех, кто хочет быстро освежить материал: каждая заметка привязана к конкретному видео и лектору. На страницу проекта можно добавить свои конспекты или улучшить существующие.
🤖 GitHub
@machinelearning_interview
Репозиторий будет полезен для тех, кто хочет быстро освежить материал: каждая заметка привязана к конкретному видео и лектору. На страницу проекта можно добавить свои конспекты или улучшить существующие.
🤖 GitHub
@machinelearning_interview
🦙 Мультимодальная поддержка в llama.cpp (обновление)
llama.cpp теперь поддерживает мультимодальные модели с визуальным вводом!
📦 Что нового
Проект
🔧 Ключевые возможности
• Поддержка моделей с вводом изображения (image + text)
• Новый CLI:
• Расширена совместимость: поддержка GGUF-моделей мультимодального типа
• Локальная работа на CPU и GPU без зависимости от облачных API
🚀 Как использовать
1. Скачай модель в формате
https://huggingface.co/liuhaotian/llava-v1.5-13b-GGUF
2. Подготовь изображение (например, `photo.jpg`)
3. Запусти CLI:
▪ GitHub
llama.cpp теперь поддерживает мультимодальные модели с визуальным вводом!
📦 Что нового
Проект
llama.cpp
теперь поддерживает *мультимодальные модели* — такие как LLaVA 1.5 / 1.6, BakLLaVA, Obsidian, MobileVLM и другие, позволяя выполнять вывод, совмещающий текст и изображения локально, без облака.🔧 Ключевые возможности
• Поддержка моделей с вводом изображения (image + text)
• Новый CLI:
llama-mtmd-cli
(заменяет `llava-cli`) • Расширена совместимость: поддержка GGUF-моделей мультимодального типа
• Локальная работа на CPU и GPU без зависимости от облачных API
🚀 Как использовать
1. Скачай модель в формате
.gguf
, например LLaVA:https://huggingface.co/liuhaotian/llava-v1.5-13b-GGUF
2. Подготовь изображение (например, `photo.jpg`)
3. Запусти CLI:
./build/bin/llama-mtmd-cli \
-m models/llava-v1.5-13b.gguf \
--image ./photo.jpg \
-p "Что изображено на фото?"
▪ GitHub
from skorch import NeuralNetClassifier
model = NeuralNetClassifier(
module=MyClassifier, # Класс модели на PyTorch
lr=0.001, # Скорость обучения
batch_size=64, # Размер батча
criterion=nn.CrossEntropyLoss, # Функция потерь
optimizer=optim.Adam # Оптимизатор
)
Здесь создаётся обёртка NeuralNetClassifier, которая делает модель PyTorch совместимой с .fit(), .predict() и другими методами Sklearn.
📌Обучение:
model.fit(X_train, y_train)
Ты обучаешь модель так же, как и в Sklearn. Это удобно и не требует написания собственного цикла обучения.
С помощью Skorch ты получаешь:
- удобный Sklearn-подобный API для PyTorch-моделей;
- автоматический вывод метрик обучения;
- лёгкую интеграцию с GridSearchCV, Pipeline и другими инструментами Scikit-learn.
https://github.com/skorch-dev/skorch
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Machinelearning
PyTorch представил MetaShuffling — решение для ускорения вывода в Llama 4 MoE, которое решает проблемы динамизма и разреженности моделей, связанных с маршрутизацией токенов. Вместо традиционных методов
padding
или slicing
, MetaShuffling использует переупорядочивание токенов по экспертам, избавляясь от ненужных операций и синхронизации между CPU и GPU. Это снижает использование памяти и устраняет задержки, связанные с обработкой «пустышек» или множественными запусками ядер.В основе решения - идея группировки токенов, назначенных одному эксперту, в непрерывные блоки. Такой подход позволяет использовать dense tensors вместо разреженных структур, сохраняя статичные формы данных.
Благодаря этому MetaShuffling совместим с механизмами графов (
CUDAGraph
, torch.compile
), которые ускоряют исполнение, избегая повторных синхронизаций. Решение особенно эффективно для Llama 4, где каждый MoE-слой активирует лишь часть экспертов, что на практике создает динамические нагрузки.GroupedGEMM
, написанный на Triton, обрабатывает несколько матриц в одном вызове, используя статические и динамические разбиения размеров, позволяя пропускать неактивных экспертов и «лишние» токены без дополнительных затрат.IndexShuffling
, в свою очередь, выполняет сортировку токенов и подсчет их количества на каждом эксперте за один проход, что по тестам оказалось в 5–13 раз быстрее, чем стандартные реализации PyTorch.Результаты экспериментов на H100 80GB выглядят многообещающими.
Prefill Llama 4 Maverick с FP8 GroupedGEMM достигает 1,197 TFlops при 286 мкс, что близко к теоретическому пределу GPU.
В задачах декодирования метрики также демонстрируют высокую эффективность: 44,88 TFlops за 59 мкс. Даже при малом количестве токенов (128) MetaShuffling показывает 80% использования пропускной способности памяти.
Для multi-host сценариев MetaShuffling предлагает гибкость между «динамическими» и «статичными» формами данных. В режиме
eager
(без графов) используется минимальное заполнение без синхронизации CPU-GPU.В
graph mode
— статичные формы с минимальным паддингом, что сокращает сетевой трафик и память. Также реализована дедупликация коммуникаций, которая распределяет нагрузку между узлами, снижая задержки в распределенных вычислениях.MetaShuffling поддерживает интеграцию с FBGEMM Generative AI Kernel Library, позволяя применять оптимизации для vLLM и SGLang.
@ai_machinelearning_big_data
#AI #ML #MetaShuffling #Pytorch
Please open Telegram to view this post
VIEW IN TELEGRAM
🐙 ML-Notebooks — готовые рецепты для изучения машинного обучения
Для тех, кто предпочитает осваивать ML на практических примерах, проект предлагает коллекцию минималистичных Jupyter-ноутбуков, от базовой линейной регрессии до тонкой настройки Mistral 7B через QLoRA. Каждый пример самодостаточен: есть реализации классических алгоритмов с нуля, работа с трансформерами и даже генеративные модели.
Авторы сделали акцент на образовательной составляющей: ноутбуки сопровождаются пояснениями и ссылками на Kaggle-соревнования. Проект полностью готов к работе в Codespaces — окружение с зависимостями разворачивается в пару кликов.
🤖 GitHub
@machinelearning_interview
Для тех, кто предпочитает осваивать ML на практических примерах, проект предлагает коллекцию минималистичных Jupyter-ноутбуков, от базовой линейной регрессии до тонкой настройки Mistral 7B через QLoRA. Каждый пример самодостаточен: есть реализации классических алгоритмов с нуля, работа с трансформерами и даже генеративные модели.
Авторы сделали акцент на образовательной составляющей: ноутбуки сопровождаются пояснениями и ссылками на Kaggle-соревнования. Проект полностью готов к работе в Codespaces — окружение с зависимостями разворачивается в пару кликов.
🤖 GitHub
@machinelearning_interview
🧠 Бесплатный курс от Hugging Face: Model Context Protocol (MCP)
Hugging Face запустили обучающий курс по Model Context Protocol (MCP) — это современный стандарт для взаимодействия между ИИ-моделями, внешними API, пользовательским вводом и контекстом. Курс идеально подойдёт разработчикам, ML-инженерам и всем, кто хочет строить мощные, интерактивные LLM-приложения.
🔍 Что ты узнаешь:
• 🧩 Как работает архитектура MCP
• 🧰 Как использовать официальные MCP SDK на Python и TypeScript
• 🛠 Как собрать своё MCP-приложение с Gradio и Hugging Face Spaces
• 🎯 Как пройти сертификацию и получить подтверждение своих навыков
📚 Содержание курса:
1. Введение в MCP и структуру курса
2. Архитектура и ключевые компоненты MCP
3. Создание первого MCP-приложения
4. Продвинутые фичи и интеграции
5. Бонусы: дополнительные примеры, кейсы, best practices
💡 Что нужно для старта:
• Опыт с Python или TypeScript
• Понимание API, LLM и разработки
• Аккаунт на Hugging Face
• Желание строить умные и гибкие AI-интерфейсы
👥 Комьюнити:
Присоединяйся к Discord-серверу Hugging Face, чтобы общаться с разработчиками и проходить курс в компании других участников.
➡️ Перейти к курсу
@machinelearning_interview - вопросы с собеседований
Hugging Face запустили обучающий курс по Model Context Protocol (MCP) — это современный стандарт для взаимодействия между ИИ-моделями, внешними API, пользовательским вводом и контекстом. Курс идеально подойдёт разработчикам, ML-инженерам и всем, кто хочет строить мощные, интерактивные LLM-приложения.
🔍 Что ты узнаешь:
• 🧩 Как работает архитектура MCP
• 🧰 Как использовать официальные MCP SDK на Python и TypeScript
• 🛠 Как собрать своё MCP-приложение с Gradio и Hugging Face Spaces
• 🎯 Как пройти сертификацию и получить подтверждение своих навыков
📚 Содержание курса:
1. Введение в MCP и структуру курса
2. Архитектура и ключевые компоненты MCP
3. Создание первого MCP-приложения
4. Продвинутые фичи и интеграции
5. Бонусы: дополнительные примеры, кейсы, best practices
💡 Что нужно для старта:
• Опыт с Python или TypeScript
• Понимание API, LLM и разработки
• Аккаунт на Hugging Face
• Желание строить умные и гибкие AI-интерфейсы
👥 Комьюнити:
Присоединяйся к Discord-серверу Hugging Face, чтобы общаться с разработчиками и проходить курс в компании других участников.
➡️ Перейти к курсу
@machinelearning_interview - вопросы с собеседований
🚀 Compressive Transformer на PyTorch — открытая реализация одной из самых загадочных архитектур ИИ!
Если ты работаешь с длинными последовательностями (NLP, музыка, временные ряды), то стандартного Transformer'а уже может быть недостаточно. Здесь на сцену выходит Compressive Transformer — и теперь его можно изучать и запускать на PyTorch благодаря открытому проекту:
🔗 http://k-a.in/pyt-comptr.html
🧠 В чём суть?
Compressive Transformer — это эволюция стандартного Transformer. Он не просто "запоминает" предыдущие токены, он сжимает память, позволяя сохранять ещё более дальний контекст без потери производительности. Это делает модель особенно ценной в задачах, где важно помнить, что происходило «много шагов назад».
📦 Что ты найдешь в проекте?
🔹 Полную реализацию на PyTorch, без зависимости от TensorFlow или сторонних обвязок
🔹 Механизм памяти с компрессией, который реально работает
🔹 Поддержка обучения и инференса на длинных последовательностях
🔹 Отличная база для экспериментов и исследований
🛠 Зачем это нужно?
• Чат-боты, которые не забывают, что ты писал 20 сообщений назад
• Генерация музыки, где важна глобальная структура
• Анализ логов и временных рядов, где значение имеет не только локальный, но и глобальный контекст
📚 Исходная архитектура была представлена DeepMind, но готовых репозиториев до сих пор крайне мало. Эта реализация — редкая возможность попробовать Compressive Transformer вживую.
👉 http://k-a.in/pyt-comptr.html
Если ты работаешь с длинными последовательностями (NLP, музыка, временные ряды), то стандартного Transformer'а уже может быть недостаточно. Здесь на сцену выходит Compressive Transformer — и теперь его можно изучать и запускать на PyTorch благодаря открытому проекту:
🔗 http://k-a.in/pyt-comptr.html
🧠 В чём суть?
Compressive Transformer — это эволюция стандартного Transformer. Он не просто "запоминает" предыдущие токены, он сжимает память, позволяя сохранять ещё более дальний контекст без потери производительности. Это делает модель особенно ценной в задачах, где важно помнить, что происходило «много шагов назад».
📦 Что ты найдешь в проекте?
🔹 Полную реализацию на PyTorch, без зависимости от TensorFlow или сторонних обвязок
🔹 Механизм памяти с компрессией, который реально работает
🔹 Поддержка обучения и инференса на длинных последовательностях
🔹 Отличная база для экспериментов и исследований
🛠 Зачем это нужно?
• Чат-боты, которые не забывают, что ты писал 20 сообщений назад
• Генерация музыки, где важна глобальная структура
• Анализ логов и временных рядов, где значение имеет не только локальный, но и глобальный контекст
📚 Исходная архитектура была представлена DeepMind, но готовых репозиториев до сих пор крайне мало. Эта реализация — редкая возможность попробовать Compressive Transformer вживую.
👉 http://k-a.in/pyt-comptr.html
Forwarded from Machinelearning
Что если ИИ-агент в браузере не просто «делает всё сам», а работает вместе с тобой — предлагает план, спрашивает разрешения, показывает действия и обучается на опыте?
Именно так работает Magentic‑UI — новый эксперимент от Microsoft Research.
Magentic‑UI — это платформа, в которой ИИ-агенты помогают людям выполнять сложные задачи в браузере (заполнить форму, найти нужные данные, скачать файлы и т.д.), но при этом не берут всё на себя, а работают в паре с пользователем.
Это не автономный бот, а интерфейс взаимодействия: человек остаётся в центре принятия решений, а агент — в роли помощника.
1) Планирует вместе с тобой
Агент предлагает пошаговый план действий. Ты можешь изменить, утвердить или уточнить его.
2) Показывает, что делает
Все действия видны — клики, ввод текста, навигация. Никакой «магии за кадром».
3) Спрашивает разрешение перед важными действиями
Агент не будет нажимать на кнопки "удалить" или "оплатить" без твоего согласия.
4) Обучается на успешных сценариях
Завершил задачу? Теперь этот план можно переиспользовать в будущем.
Где это может пригодиться?
• Заполнение длинных форм и анкет
• Автоматизация рутинных действий в браузере
• Создание умных пользовательских сценариев (например: «найди и скачай последние отчёты с нужного сайта»)
• Обучение и настройка собственных браузерных агентов
А как насчёт безопасности?
• Агент работает только на разрешённых сайтах (white-list)
• Весь код и браузер изолированы в Docker — ничего не утечёт
• Все действия — прозрачны и отменяемы
@ai_machinelearning_big_data
#microsoft #ai #aiuagent #ml
Please open Telegram to view this post
VIEW IN TELEGRAM